import { drizzle } from 'drizzle-orm/node-postgres';
import { Pool } from 'pg';

// 连接池配置 - 根据性能优化建议
const pool = new Pool({
  host: process.env['POSTGRES_HOST'] || 'localhost',
  port: Number(process.env['POSTGRES_PORT']) || 5432,
  user: process.env['POSTGRES_USER'] || 'postgres',
  password: process.env['POSTGRES_PASSWORD'] || 'password',
  database: process.env['POSTGRES_DB'] || 'sker',
  
  // 性能优化配置
  max: 20, // 最大连接数 - 可根据 CPU 核心数调整 (核心数 * 2)
  idleTimeoutMillis: 10000, // 空闲连接超时 (10秒)
  connectionTimeoutMillis: 2000, // 连接获取超时 (2秒)
  
  // SSL 配置 (生产环境建议启用)
  ssl: process.env['NODE_ENV'] === 'production' ? { rejectUnauthorized: false } : false,
});

// 创建 Drizzle 实例
export const db = drizzle(pool);

// 导出连接池以便在需要时直接使用原生 PostgreSQL 功能
export { pool };

// 优雅关闭数据库连接
export const closeDatabase = async () => {
  await pool.end();
};
